package com.ifonly.handler;

import java.util.List;

/**
 * @author <a href="mailto:ifonlymaster@163.com">ifonly</a>
 * @version 1.0 2015-12-10 13:12
 * @since JDK 1.6
 */
public class HandlerFactory {

    private HandlerFactory() {}

    /**
     * 获取 第一个需要调用的Handler, 会构建一个 Handler 对象链, 并将 默认 Handler 对象 设置在调用链的 最后
     *
     * @param handlers Handler对象集合
     * @param defaultHandler 默认Handler
     * @return 第一个需要调用的Handler
     */
    public static Handler getHandler(List<Handler> handlers, Handler defaultHandler) {
        Handler result = defaultHandler;
        for (int i = handlers.size() - 1; i >= 0; i--) {
            Handler temp = handlers.get(i);
            temp.next = result;
            result = temp;
        }
        return result;
    }

}
